package com.xiaobai.netease_news.utils;

/**
 * Created by Intellij IDEA
 * Project: NeihanDuanzi
 * Author: Jack
 * Email: jackfangqi1314@gmail.com/jackfangqi@163.com
 * Date: 2015/5/30
 */

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

/**
 * 文件缓存的工具类，包含网址到文件名称的映射
 */
public final class CacheUtil {
    private CacheUtil() {
    }

    /**
     * 将网址映射成一个特定的MD5字符串信息，确保唯一
     *
     * @param url
     * @return
     */
    public static String md5(String url) {
        String ret = null;
        if (url != null) {
            // 针对数据进行算法的处理，形成一个唯一的内容，每一个数据生成的内容都不同
            try {
                MessageDigest digest = MessageDigest.getInstance("MD5");
                // 生成了url对应的唯一的信息
                byte[] data = digest.digest(url.getBytes());

                // TODO 需要将data转换为十六进制表示法
                ret = toHexString(data);

            } catch (NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
        }

        return ret;
    }

    /**
     * 十六进制转换
     *
     * @param data
     * @return
     */
    public static String toHexString(byte[] data) {
        if (data != null) {
            StringBuilder stringBuilder = new StringBuilder();
            for (byte b : data) {
                int h, l;
                l = b & 0x0F;   // 低四位
                h = (b >> 4) & 0x0F;    // 高四位
                stringBuilder.append(Integer.toHexString(h)).append(Integer.toHexString(l));
            }

            return stringBuilder.toString();
        }

        return null;
    }

}
